package main

import "fmt"

func main() {
	s, t := "anagram", "nagaram"
	fmt.Println(isAnagram(s,t))
}

/**
思路：
1. 初始化值都为 0 且 长度为 26 的数组，数组索引即对应 26 个小写字母的 anscii 码;
2. 出现在 s 中的小写字母在数组对应的索引中 加一;
3. 出现在 t 中的小写字母在数组对应的索引中 减一;
4. 最后该数组全为 0 的话 s 和 t 就是 有效的字母异位词，否则不是.
 */
func isAnagram(s string, t string) bool {
	if len(s) != len(t) {
		return false
	}

	if len(s) == 0 {
		return true
	}

	// 只包含26个小写字母
	countChar := [26]int{}
	for i := range s {
		countChar[s[i] - 'a'] += 1
		countChar[t[i] - 'a'] -= 1
	}

	for _, v := range countChar	{
		if v != 0 {
			return false
		}
	}

	return true
}
